import Table from 'cli-table3';
import chalk from 'chalk';

/**
 * table 优化展示
 */
export class TableDisplay {

    static TABLE_STATUS ={
        'success': chalk.green('● 成功   '),
        'normal': chalk.green('● 正常   '),
        'error': chalk.red('● 异常   '),
        'warn': chalk.yellow('● 警告   '),
        'wait': chalk.blue('● 等待   '),
        'unknown': chalk.cyan('● 未知   '),
    }

    constructor(table,statusFieldName) {
        this.table = table;
        //标题
        this.head = table.options.head;
        // 状态的字段
        this.statusFieldName = statusFieldName;

    }

    async pushTable(row) {
        // 拷贝对象，避免修改原始数据
        const rowCopy = { ...row };

        // 处理状态字段
        rowCopy[this.statusFieldName] = TableDisplay.TABLE_STATUS[rowCopy[this.statusFieldName]] || rowCopy[this.statusFieldName];

        // 根据表头顺序生成数组
        const rowArray = this.head.map(key => rowCopy[key]);

        // 推入 table
        this.table.push(rowArray);
    }

    async toString() {
        console.log(this.table.toString());
    }

}


/**
 *
 * @param table 创建的表格对象
 * @param statusFieldName 状态字段
 * @returns {TableDisplay}
 */
/**
 * @param {Table} table 创建的表格对象
 * @param {string} statusFieldName 状态字段
 * @returns {TableDisplay}
 */
export function newTable(table,statusFieldName) {
    return new TableDisplay(table,statusFieldName);
}